package lib.self.utils;

import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;

/**
 * description: Toast工具类 解决Toast重复显示
 * author: Steven Xiao
 * date: 2017/3/7
 */
public class ToastUtil {
    protected static Toast mToast = null;
    private static String mPreText;
    private static long mPreTime = 0;//上次Toast显示的时间

    /**
     * 利用时间差 判断上一个toast是否还存在 同样的内容 2秒内只会显示一次
     *
     * @param context
     * @param text
     */
    public static void showToast(Context context, String text) {
        if (context == null) {
            return;
        }
        if (TextUtils.isEmpty(text)) {
            return;
        }
        long currentTime = 0;
        if (mToast == null) {
            mToast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
            mToast.show();
            mPreTime = System.currentTimeMillis();
        } else {
            currentTime = System.currentTimeMillis();
            if (text.equals(mPreText)) {
                if (currentTime - mPreTime > 2000) {
                    mToast.show();
                } else {
                    return;//避免一直点击过了两秒不会出现的问题
                }
            } else {
                mPreText = text;
                mToast.setText(text);
                mToast.show();
            }
        }
        mPreTime = currentTime;
    }

    public static void showToast(Context context, @StringRes int resId) {
        if (resId == 0) {
            return;
        }
        showToast(context, context.getString(resId));
    }

    /**
     * 弹出图片
     */
    public static void showImageToast(Context context, @DrawableRes int resId) {
        //获取一个Toast对象，为下面操作准备
        Toast toast = new Toast(context);
        ImageView image = new ImageView(context);
        //用系统提供的图片
        image.setImageResource(resId);
        //设置图片
        toast.setView(image);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();
    }
}
